module.exports = reliefProcess;

var Bitmap2Svg = require('./Bitmap2Svg');
var svg2gcode = require('../../../svg2gcode/svg2gcode');

function reliefProcess({bitmapData, gcodeParams, gcode, gCodeDriver}) {
    // var retGCode = [];
    let gcp = gcodeParams;
    let incDepth = 256 / gcp.reliefMode.depth;
    let toolDiameter = gcp.DPI ? Math.round(25.4 * 1000 / gcp.DPI) / 1000 : 0.05;
    if (gcp.interpTimes && gcp.interpTimes != 0){
        toolDiameter = toolDiameter / (gcp.interpTimes + 1);
    }

    let fillMode = gcp.rapidRate >= 3000 ? 1 : 5;
    let optimizeParams = {
        useOptimize: false, // 是否使用优化
        onLightDelay: 90, // 开光延迟
        offLightDelay: 190, // 关光延迟
        jumpDelay: 300, // 跳转延迟
        cornerDelay: 80 // 拐角延迟
    };
    
    let svg2gCodeParams = {
        svgString: null,
        speedMax: gcp.laserPowerMaxS,
        feed: gcp.rapidRate,
        toolDiameter: gcp.DPI ? Math.round(25.4 * 1000 / gcp.DPI) / 1000 : 0.05,
        canvasMatrix: gcp.canvasMatrix,
        // fillMode: 1, // 默认单向填充
        fillMode: fillMode, // 默认弓形填充
        markMode: 0,
        previewMode: -1,
        isHandhoudMode: gcp.isHandhoudMode,
        autoAngleIncrement: 0,
        frequency: gcp.frequency,
        fillAngle: 0,
        cancelStroke: true,
        fillParams: null,
        gcodeFinishCmd: false,
        gcodeStartCmd: false,
        gcodeDriver: gCodeDriver,
        optParams: optimizeParams
    };

    let matrix = gcp.matrix;

    let threshold = gcp.reliefMode.isIntaglioCarving ? 256 - (gcp.reliefMode.curPlies * incDepth) : (gcp.reliefMode.curPlies * incDepth) - 1;
    Bitmap2Svg.loadBm(bitmapData, threshold);
    Bitmap2Svg.process();
    svg2gCodeParams.svgString = Bitmap2Svg.getSVG(1, matrix);
    // TODO
    svg2gCodeParams.fillAngle = (gcp.reliefMode.curPlies * gcodeParams.reliefMode.scanAngleIncrement) % 360;
    svg2gcode(gcode,svg2gCodeParams);
    Bitmap2Svg.clear();

    gCodeDriver.laserOff(); // 关激光
    gCodeDriver.rapid({x: 0, y: 0}); //回零
    
    // for (let i = 0; i < gcodeParams.reliefMode.depth; i++) {
    //     let threshold =  256 - (i * incDepth);
    //     var beginTime = +new Date();  
    //     Bitmap2Svg.loadBm(bitmapData, threshold);

    //     Bitmap2Svg.process();
    //     svg2gCodeParams.svgString = Bitmap2Svg.getSVG(1, matrix);

    //     var endTime = +new Date();
    //     console.log("矢量化用时共计"+(endTime-beginTime)+"ms");

    //     svg2gCodeParams.fillAngle += i * gcodeParams.reliefMode.scanAngleIncrement;
        
    //     beginTime = +new Date(); 
 
    //     svg2gcode(gcode,svg2gCodeParams);

    //     endTime = +new Date();
    //     console.log("矢量图转Gcode用时共计"+(endTime-beginTime)+"ms");

    //     console.log("当前层数为"+(i+1));

    //     Bitmap2Svg.clear();
    // }

    // gcode = gcode.concat(retGCode);
    // return retGCode;
}



